This invention relates to the field of computer systems. More particularly, a system and methods are provided for sharing resources among transmission queues, such as InfiniBand send queues.
In many computing environments, a communication interface (e.g., a network interface card, a channel adapter) maintains multiple queues for transmitting packets, cells, frames or other communications. The queues may be designed to store the communications from the time they are generated or submitted for transmission, until they are acknowledged by their recipients. Because they are colocated on a single communication interface, resources of the interface (e.g., memory) must be shared or allocated among the queues.
Existing methods of managing a resource shared among transmission queues are often inefficient. For example, allocating all queues sufficient memory to accommodate a maximum expected level of traffic, while considering maximum latencies, is impractical due to the cost. Further, if the queues share a common outbound communication link, they cannot all transmit simultaneously on the full link bandwidth, and therefore do not all need a level of resources corresponding to use of the full bandwidth.
In addition, when a transmission queue receives different types of communications for transmission (e.g., different sizes, different content), an existing method of allocating resources to the queue may allow a source or type of communication to be starved. For example, sufficient memory may be allocated to a queue to repeatedly accommodate small communications, but not enough to accommodate a large communication.
Thus, what is needed is a system and method for sharing a resource (e.g., memory) among multiple transmission queues in an efficient manner, while preventing starvation.